home *** CD-ROM | disk | FTP | other *** search
/ PD Collection CD 1 / PD Collection CD 1.iso / programer2 / pari2 / pari / other / Changes1 < prev    next >
Text File  |  1991-08-12  |  47KB  |  954 lines

  1. Changes to the 1.31.2 version
  2. 1) trans2.c: mppsi: replace a=mplog(affsr... by:
  3.   affsr(x,a=cgetr(l));a=mplog(a);
  4. 2) gen1.c: gadd: type 2+ type 4: replace signe(y) by signe(y[1]).
  5. 3) gen1.c: gadd: type 10+ type 11: after if(gcmp0(x)) ... else { replace by:
  6.   i=signe(y)?valp(y)+ly-gval(x,vx):valp(y)+3-gval(x,vx);
  7.   if(i<3) z=gcopy(y);else { same as before }
  8. 4) gen2.c: gpui: replace long m by unsigned long m.
  9. 5) mp.c: addir: replace lgef(x)-expo(y)>>5 by lgef(x)-(expo(y)>>5).
  10. 6) mp.c: addrr: towards the end, after if(m) { k=0;... replace
  11.   for(i=lp1-1;... by for(i=lp1-1-j;...
  12. 7) mp.c: cgetg: replace x*4 by ((unsigned short x)<<2).
  13. 8) mp.c: dvmdii: after if((long)z==0xffffffff){...} replace p1[1]=... by
  14.   if(lx!=(dec+2)) {p1[1]=p1[0];setsigne(p1,sy);} else {avma=av;p1=gzero;}
  15. 9) mp.c: dvmdii: later, replace p3[1]=p3[0] by
  16.   if(lg(p3)<3) p3[1]=2;else {p3[1]=p3[0];setsigne(p3,sy);}
  17. 10) usersch3.tex: in numer, replace the library syntax denom by numer.
  18. 11) usersch3.tex: replace additionnal by additional.
  19. 12) usersch4.tex: replace lint ar by {\tt lint} at.
  20. 13) Changed slighly the README and INSTALLATION files.
  21. 14) trans1.c: transc: case 13,14: replace varn(x) by gvar(x).
  22.  
  23. Changes to the 1.31.3 version
  24. 15) mp.c: divrr: towards the middle, replace if(z[i]==si) {qp=0xffffffff;
  25.     addll(si,z[i+1]);} by
  26.     if(z[i]==si) {qp=0xffffffff;k=addll(si,z[i+1]);} (the only change is the
  27.     k= in front of addll).
  28. 16) mp.c: mulrr: line 3 after declarations,
  29.     replace z=cgetr(3);z[2]=0;z[1]=e+0x800000;return z; by
  30.     z=cgetr(3);z[2]=0;z[1]=e;return z;
  31. 17) In gen1.c, write code to allow type 3 by type 6 or 8 operations.
  32.     Specifically:
  33.     gadd, case 3+case 6 and 8:
  34.       case 6 : z=cgetg(ly,ty);z[2]=lcopy(y[2]);z[1]=ladd(x,y[1]);break;
  35.       case 8 : z=cgetg(ly,ty);z[1]=y[1];z[3]=lcopy(y[3]);z[2]=ladd(x,y[2]);
  36.     break;
  37.     gmul, case 3*case 6 and 8:
  38.       case 6 : z=cgetg(ly,ty);z[1]=lmul(x,y[1]);z[2]=lmul(x,y[2]);break;
  39.       case 8 : z=cgetg(ly,ty);z[1]=y[1];z[2]=lmul(x,y[2]);z[3]=lmul(x,y[3]);
  40.     break;
  41.     gdiv, case 6/case 3: fall through with cases 1,2,4,5.
  42.  
  43. Changes to the 1.31.4 version
  44. 18) In gen1.c, gdiv: type 1/type 6 falls through with type 1/type 8;
  45.     repeat the same code for type 3/type 6 and 8.
  46. 19) In gen1.c, gdiv: case 8/case 3: fall through with cases 1,4,5
  47.     instead of falling through with case 7.
  48. 20) Corrected a few misprints and details in the manual.
  49. 21) In mp.c, affsi: replace if(!s) x[1]=2; by
  50.     if(!s) {x[1]=2;return;}
  51. 22) In arith.c, isprime and ispsp: add after {: long av=avma;x=gabs(x);
  52.     and before each of the three returns, add avma=av (and put {} after
  53.     the first 2 ifs).
  54. 23) trans3.c: written agm().
  55. 24) bibli2.c: written initell(),coordch(),pointch(),hell(),ordell(),
  56.     oncurve(),powell(),addell(),subell(),matell().
  57. 25) gp.c changed version number to 1.32.
  58. 26) arith.c: classno, declare a long k2, and in the two lines following
  59.     if(tabla[j2]==k) {, replace k by k2 (3 times) (but leave tabla[j2]==k).
  60. 27) in erreurs.h and messages.c, added the three error messages initeler1,
  61.     initeler2, heller1.
  62. 28) written forprime().
  63. 29) In gen1.c: gmul, case 1*case 7, start with if(signe(x)) {...} and before
  64.     the break add else z=gzero;. Similarly in case 4,5*case 7, except that 
  65.     one starts with if(signe(x[1])) instead. Similarly again in gdiv,
  66.     for case 1/case 7 and case 4,5/case 7. Finally, in gen3.c: gmulsg,
  67.     similarly but starting with if(s) instead of if(signe(x)).
  68. 30) In init.c: err, added talker, which simply prints the message.
  69.     Made the corresponding changes in messages.c and erreurs.h.
  70. 31) In arith.c: classno, insert lines to check for stack overflow
  71.     (limite etc...)
  72. 32) In bibli1.c: lllgram, replace p2=x at the beginning by p2=gcopy(x).
  73. 33) Wrote issquarefree(),isfundamental().
  74. 34) Added a few error messages.
  75. 35) Unified the genpari.h files for the different versions. We need now
  76.     gencom.h, containing all the common declarations, and which in principle
  77.     is now the only file to change when a new function is added. Then
  78.     gen68k.h, containing the 680x0 specific declarations, genport.h for the
  79.     others. Finally, genpari68k.h and genpariother.h are simply 3 includes.
  80. 36) Updated the manual for version 1.32.
  81. 37) trans1.c: transc, output an error message for type 16.
  82. 38) trans3.c: slight cleanup of polylog functions, but no corrected bugs.
  83. 39) mp.c: in most places where a C-integer is involved (divsi, modsi, etc...)
  84.     add hiremainder=0; before execution of divll(). This is was a severe bug
  85.     of the portable versions.
  86. 40) More changes in the manual, and explanations of the polylog functions.
  87. 41) polarit.c: squff, replace p1=gadd(gabs(a[da+2],4),... by
  88.     p1=gadd(p2=gabs(a[da+2],4),... and 3 lines later, replace a[da+2] by p2.
  89. 42) bibli2.c: wrote zell(), addsell(), powsell(), apell2().
  90. 43) Polished and rewrote kronecker(),krogs() and kross().
  91. 44) Wrote apell().
  92. 45) Wrote glogagm(),theta(),thetanullk().
  93. 46) mp.c: cmpir, change lgef(y) into lg(y).
  94. 47) In many places, replace gerepile(,,0)/4 by gerepile(,,0)>>2, and before
  95.     adding displacement, check if pointer is universal or not.
  96. 48) trans2.c: hyperu, after if(ex) {y=cgetg(3,6)...}, add:
  97.     else y=cgetr(l);
  98. 49) gen3.c: gsubst, case 11,case 10,13,14, after the else, replace
  99.     e=gval(y,v) by e=gvar(y,gvar(y));
  100.     three lines after, replace else p1=taylor(y,v,l); by
  101.     else p1=gdiv(greffe(y[1],l),greffe(y[2],l));
  102. 50) gen3.c: gsubst, case 11, case 11 vx=vy, 10 line addition in case
  103.     vy!=vx.
  104. 51) gen3.c: precision, replace if((tx=typ(x))==2)... by
  105.     if (tx==2) return signe(x) ? lg(x) : 2-(expo(x)>>5);
  106.     and add tx=typ(x) in declaration.
  107. 52) arith.c: sfcont, case 13,14 change definition of l1, and at the end copy
  108.     y to vector of correct length.
  109. 53) es.c: sori and bruti, add a default printing the codeword in hex:
  110.     break;default: printf("08x  ",*g);
  111. 54) mp.c: affir,shifti,mulsr, test whether shift is zero.
  112. 55) mp.c: divrs, replace z[lx-1]=shiftl... by
  113.     shiftl(garde,sh);k=hiremainder; and start for loop at i=lx-1.
  114. 56) mp.c: rtodbl, replace exp2(ex-co) by exp2(ex+1-co).
  115. 57) mp.c: gerepile!!! Finally found the two year old bug. Needs change if 
  116.     typ(ll)==10, and also when the GEN after l is not complete.
  117. 58) mp.s: same of course.
  118. 59) arith.c: divisors, change gerepile(tetpil,av,... into gerepile(av,tetpil,.
  119. 60) bibli1.c: tayl, between p1[vx+1]=lpolx[v]; and p1[v+1]=lpolx[vx]; insert
  120.     for(i=vx+1;i<v;i++) p1[i+1]=lpolx[i];
  121. 61) changevar() available under gp.
  122. 62) mp.c: modis, change return (y>0) .... to
  123.     return (signe(x)>0) ? stoi(hiremainder) : stoi(abs(y)+hiremainder);
  124. 63) polarit.c: polgcd, set gcd > 0 in case of type 1,2,4,5.
  125. 64) polarit.c: with code from R. Schroeppel, finished writing factpol, hence
  126.     factor.
  127. 65) updated the manual.
  128.  
  129. Release version of pari-1.32
  130.  
  131. -------------------------------------------------------------------------------
  132.     
  133. Retour en France et au francais.
  134.  
  135. 1) bibli2.c: remplace les occurences de lint par qlint
  136. 2) gencom.h: ajoute #undef PI avant le #define PI
  137. 3) mp.c: itos(), remplacer -p1 par -((long)p1)
  138.          et dans divss(), resss(),divsi(),divis() remplacer -hiremainder par
  139.          -((long)hiremainder)
  140. 4) trans3.c: wf(), enlever les ,prec aux 2 appels de inteta.
  141. 5) bibli2.c: subsell(), remplacer addsell(z1,zp) par addsell(e,z1,zp), et idem dans
  142.    subell(), remplacer addell(z1,zp) par addell(e,z1,zp).
  143. 6) gen2.c: gaffect() case 7-->case 3, remplacer val=pvaluation(y[1],&p1); par
  144.    val=pvaluation(y[1],x[2],&p1);
  145. 7) versionsparc.c et versionport.c: divll(), enlever les (ulong) devant
  146.    hiremainder.
  147. 8) mp.c: divss(), remplacer abs(x),abs(y) par (ulong)abs(x),(ulong)abs(y).
  148. 9) trans2.c: mpgamdz(), remplacer p1=mpgamd(s) par p1=mpgamd(s,l).
  149. 10) trans2.c: gach(), remplacer y=glog(p1) par y=glog(p1,prec).
  150. 11) trans2.c: eint1(), remplacer mplog(x,prec) par mplog(x) et mpexp(gneg(x),prec)
  151.     par mplog(negr(x)).
  152. 12) arith.c: fin de classno2(), la ligne commencant par p5=addrr... enlever le ,4 final.
  153. 13) trans1.c: transc(), remplacer roots(x[1]) par roots(x[1],prec).
  154. 14) gen2.c: gaffect(), case 10--> case 12, remplacer gmod(x,y[1],y[2]) par
  155.     gmodz(x,y[1],y[2]).
  156. 15) arith.c: isprime() et ispsp(), rajouter au debut if(typ(x)!=1) err(arither1); et
  157.     remplacer x=gabs(x) par x=absi(x).
  158. 16) arith.c: kro8(), remplacer gmul(p2,p2)-gmul2n(... par gmul(p2,p2),gmul2n(... 
  159.     et mettre au debut av=avma et a la fin avant le return avma=av.
  160. 17) gen3.c: deriv(), remplacer ggrando(polx[vx],vx,e+lx-2) par ggrando(polx[vx],e+lx-2).
  161. 18) trans3.c: polylog(), remplacer gnorm(x,prec) par gnorm(x).
  162. 19) alglin.c: caract(), if(tx==12) remplacer caract(p2) par caract(p2,v).
  163. 20) bibli1.c: lindep(), fin, remplacer gtrans(p4,p3) par gtrans(p4).
  164. 21) mp.c: addrr(), dans le else avant if(sx==sy), ajouter m=0; apres
  165.     flag=2;p2=x;
  166. 22) mp.c: dvmdii(), dans le if(p1[i]==si), remplacer addll(si,p1[i+1])
  167.     par k=addll(si,p1[i+1]).
  168. 23) changements de nature cosmetiques dans differents programmes.
  169. 24) alglin.c: gnorml2(), commencer par y=gzero; puis if(lx>1)
  170.     mettre av=avma;y=gnorm(x[1]);et remplacer y=gerepile... par
  171.     if(lx>2) y=gerepile.
  172. 25) gen3.c: gdivmod(), remplacer else(gdivmoder) par 
  173.     else err(gdivmoder).
  174. 26) gp.c: changer *tch=='\{' en *tch=='{'
  175.  
  176. Chargement Mac par Dominique
  177.  
  178. -----------------------------------------------
  179.  
  180. 27) Dans example, mattrans.c, changer gscalmat(r,lx) en gscalmat(r,lx-1).
  181. 28) Inclut dans la version 1.32 les programmes keri() et kerr() de C. Batut,
  182.     et modifie le manuel en consequence.
  183. 29) polarit.c: squff, remplace gsqrt(p1,4) par gaddsg(1,racine(p1)), et enlever
  184.     le gfloor.
  185. 30) init.c: catchinterrupt(), ajoute signal(SIGINT,catchinterrupt) avant err().
  186. 31) polarit.c: factmod(), ajoute else err(impl,"factmod for p>=2^31"); apres
  187.     psim=itos(p);
  188. 32) bibli2.c: dans forprime() et prodeuler(), remplacer
  189.     while(gcmpgs(a,prime)>0) prime+= *p++; par
  190.     while((*p)&&gcmpgs(a,prime)>0) prime+= *p++;if(!*p) err(recprimer);
  191. 33) Ajoute un ; juste avant le \ de l'avant derniere ligne de Makefile.port.
  192. 34) polarit.c: a plusieurs endroits (factmod et squff), remplace gmodulo par
  193.     gmodulcp.
  194. 35) bibli1.c: ecrit ordred(). 
  195. 36) gencom.h: change MAXBLOC de 1000 a 5000.
  196. 37) bibli2.c: fordiv(), ajouter killvalue(ep) avant le return gnil.
  197. 38) polarit.c: split(), remplacer av=avma;if(p==2) par
  198.       av=avma;
  199.       if(p==2)
  200.     {
  201.       w=gmul(gpuigs(polx[v],m-1),unmodp);m+=2;
  202.       for(w0=w,j=1;j<d;j++) w=gmod(gadd(w0,gmul(w,w)),*t);
  203.     }
  204.       else
  205.     {
  206.       w=gmul(stopoly(m++,p,v),unmodp);
  207.       wm=gpui(gmodulo(w,*t),q);w=gsub(*(wm+2),unmodp);
  208.     }
  209. 39) polarit.c: factmod(), apres else av=avma (ligne 5 executable) mettre
  210.     if(lgef(f)==3) {avma=av;y=cgetg(3,19);y[1]=lgetg(1,18);y[2]=lgetg(1,18);return y;}
  211. 40) gen1.c: gmul(), enleve un printf de debuggage oublie.
  212.  
  213. disquette dominique (pas encore la 1.32.2 definitive)
  214.  
  215. ----------------------------------------------------------------------
  216.  
  217. 41) ajoute kerreel
  218. 42) ajoute apell1, optimisation pour p < 2^30
  219. 43) supprime les #ifdef macintosh de init.c et messages.c, il n'en reste
  220.     plus que dans plot.c et gp.c
  221. 44) ajoute genparimac.h et Makefile.mac pour uniformiser la distribution
  222. 45) supprime 24 declarations de variables locales inutilisees.
  223. 46) bibli2.c: interverti apell() et apell1().
  224. 47) gen3.c: modifie gmodulo() et gmodulcp() pour qu'ils acceptent
  225.     mod(scalaire,polynome).
  226. 48) polarit.c: modifie content() pour qu'il accepte n'importe quel type, et
  227.     dans anal.c et message.c, appel a content() possible de gp.
  228. 49) mp.s et mp.c: expi rendait toujours 1 de trop. Soustraire 1 avant de partir.
  229. 50) es.c: sori(), corrige la sortie du type 12: pas de test signe(g[2])<0.
  230. 51) polarit.c: ggcd() case 1, case 3, remplacer if(!gcmp1(z)) par if(!gcmp1(p1)).
  231. 52) polarit.c: squff() a deux endroits, remplacer pro&0xffff+rem par (pro&0xffff)+rem.
  232. 53) polarit.c: squff() remplacer GEN tabd[NOMDEP][30] par GEN tabd[NOMBDEP][500] (ou mieux
  233.     faire une allocation dynamique).
  234. 54) alglin.c : Dans kerreel,eigen,jacobi remplacer
  235.            affsr(1,eps=cgetr(prec)) ou affsr(0,eps=cgetr(prec));
  236.     par :
  237.     eps=cgetr(3);eps[2]=0x80000000;eps[1]=0x01800010-((prec-2)<<5);
  238.     Ajouter le parametre prec dans kerreel et eigen.
  239.     Dans eigen() : remplacer ssesp=kerreel(z) Par : ssesp=kerreel(z,prec)
  240. 55) arith.c: classno() rajouter au debut (avant les hash) 
  241.   if(gcmpgs(x,12)<=0) return gun;
  242.   et deplacer le test x=0 ou 3 mod 4 au debut.
  243. 56) trans3.c: sagm(), remplacer while(ep<pp) par
  244.   while((ep<pp)&&(!gcmp0(p1))).
  245. 57) top,bot et avma sont maintenant definis dans init.c. Les reservations
  246.   de memoire dans mp.s, sparc.s et versionport.c pour
  247.   ces trois variables sont supprimees.
  248. 58) corrige quelques typos dans le manuel.
  249. 59) ecrit les fonctions gtoser() (series dans gp) et gtopoly() (poly dans gp),
  250.   et decrit leur fonction dans le manuel.
  251. 60) ecrit gtovec() (vec dans gp) et manuel.
  252. 61) bibli2.c: ordell() change if(signe(d)) en if(!gcmp0(d)).
  253.     et p3=gsub(gsqrt(d,prec),p2) en p3=gsqrt(d,prec).
  254.     et elimine le message d'erreur au cas ou il n'y a pas de point
  255.     mod p.
  256. 62) bibli2.c: powsell1(), ajouter la declaration du parametre formel
  257.    long n!!.
  258. 63) bibli2.c: apell(), trouve la bug 1439. Declarer une variable sellpt f2;
  259.     puis remplacer la ligne if(bcon>1) powssell1(cp4,p,bcon,&f,&f); par
  260.     if(bcon>1) powssell1(cp4,p,bcon,&f,&f2);else f2=f;
  261.     ensuite 12 lignes plus loin remplacer addsell1(cp4,p,&fh,&f,&fh) par
  262.     addsell1(cp4,p,&fh,&f2,&fh), et idem 3 lignes plus loin remplacer 
  263.     powssell(cp4,p,s,&f,&fg) par powssell1(cp4,p,s,&f2,&fg). Par contre, laisser
  264.     le powssell1(cp4,p,p3,&f,&fh) apres trouve (c'etait justement ca la bug: f etait
  265.     detruit, on utilise donc provisoirement f2).
  266.  
  267. Prerelease de la version 1.33 (en attente de confirmation Bernardi).
  268.  
  269. 64) mp.s (si si!) gerepile (encore!): remplacer le bhi 8$ qui se trouve juste avant
  270.     movl #gerper,sp@- par un bhi 4$.
  271. 65) Simplification de la fonction divmod, declaree statique dans bibli2.c
  272. 66) Reecriture mpfact, 25% plus rapide sur 5000!.
  273. 67) Ajout d'un paragraphe et d'une reference a install dans usersch4.tex
  274. 68) typo dans usersch4.tex
  275.  
  276. Version 1.33 definitive, le 13/6/90 a 0h.
  277.  
  278. ----------------------------------------------------------------------
  279.  
  280. 69) Change le library mode de hermite a hnf.
  281. 70) Introduit la commande \v (version).
  282. 71) bibli2.c: sumalt(): remplacer if(gexpo(p1)<... par if(gcmp0(p1)||(gexpo(p1)<...
  283. 72) trans2.c: gacos() et gach(): remplacer setvalp(y,0) par setexpo(y,0).
  284. 73) polarit.c: factor(), dans le if(gcmp0(x)) remplacer y=cgetg(2,19) par
  285.     y=cgetg(3,19).
  286. 74) gen1.c: gadd() case 11+ case 13,14 remplacer if(lz<1) par if(lz<3).
  287. 75) anal.c, messages.c, gencom.h, trans3.c, usersch3.tex: modifications assez
  288.     profondes de tout ce qui concerne les polylogarithmes, sauf polylog
  289.     lui-meme. En particulier, suppression des fonctions dm2, dm3, dst3, trilog
  290.     (conserve dilog), modification de dm (qui s'appelle maintenant polylogd),
  291.     et ecriture de polylogp.
  292. 76) trans2.c: dans les commentaires de mpbern() et bernvec(), changer nomb en
  293.     2*nomb.
  294. 77) bibli2.c: plot(), ajouter un printf("\n"); avant et apres le trace.
  295. 78) gen1.c: gmul() type 11*type 11: remplacer tout par:
  296.         case 11: if(lx>ly) {k=ly;ly=lx;lx=k;p1=y;y=x;x=p1;}
  297.         if (gcmp0(x)||gcmp0(y))
  298.           {
  299.         z=cgetg(3,11);
  300.         z[1]=0x8000+valp(x)+valp(y);
  301.         setvarn(z,vx);
  302.           }
  303.         else
  304.           {
  305.         l=avma;p1=cgeti(lx);z=cgetg(lx,ty);
  306.         setvalp(z,valp(x)+valp(y));setvarn(z,vx);setsigne(z,1);
  307.         for (i=2;i<lx;i++)
  308.           {
  309.         p1[i]=!gcmp0(y[i]);z[i]=p1[i]?lmul(x[2],y[i]):zero;
  310.           }
  311.         for(i=3;i<lx;i++)
  312.           if(!gcmp0(x[i]))
  313.         for(j=2;j<=lx+1-i;j++)
  314.           if(p1[j]) z[i+j-2]=ladd(z[i+j-2],gmul(x[i],y[j]));
  315.         tetpil=avma;z=gerepile(l,tetpil,gcopy(z));
  316.         normalize(&z);
  317.           }
  318.         break;
  319.   Ceci ameliore considerablement (d'un facteur 2 a 20 parfois) la
  320.   multiplication de deux series.
  321. 79) trans3.c: ecrit jbesselh(), version primitive (a ameliorer quand l'argument
  322.     est proche de zero).
  323. 80) anal.c: change la definition de mod() en gmodulcp, et ajoute modp() qui est
  324.     l'ancien mod(), i.e. qui cree un nouveau bloc.
  325. 81) gen1.c: ameliore la division case 11/case 11 en testant des le debut les zeros
  326.     du diviseur.
  327. 82) trans2.c: ecrit cxgamma() et cxpsi(), et fait quelques modifs de 
  328.     presentation dans mppsi() et mpgamma().
  329. 83) bibli2.c: ecrit forstep(), et modifie forpari() pour qu'ils acceptent des
  330.     bornes non entieres. Ajoute des messages d'erreur.
  331. 84) arith.c: classno(), replace if(gcmpgs(x,12)<=0) by if(gcmpgs(x,-12)>=0).
  332. 85) bibli2.c: les modifs (83) de forstep et forpari etaient fausses. Les remplacer par
  333.     la nouvelle version.
  334. 86) plot.c: ecrit ploth2(). 
  335. 87) arith.c: commence a ecrire nucomp() (ne pas utiliser).
  336. 88) Ajoute anell() (ou ca?)
  337. 89) Jacobi entierement re-ecrit
  338. 90) dans eigen remplacer rr=roots(p,5) par : rr=roots(p,prec) 
  339. 91) dans sqred2 ajouter :   if (typ(a)!=19) err(kerer1);
  340.  
  341. -----------
  342.  
  343. Le 21/8/90
  344.  
  345. 92) alglin.c: gtrans(), case 19 remplacer lx=lg(x) par
  346.     if((lx=lg(x))==1) return cgetg(1,19).
  347. 93) polarit.c: subres(): remplacer if(dy==3) return gun;av=avma;/*p3=...*/ p3=gun;p4=gun; par
  348.     av=avma;p4=content(y);
  349.     if(dy==3) {tetpil=avma;return gerepile(av,tetpil,gpuigs(p4,dx-3));}
  350.     p3=content(x); /*p3=gun;p4=gun; */.
  351.     Ensuite, remplacer if(varn(x)!=varn(y)) return gun; par
  352.     if(varn(x)!=varn(y))
  353.       return (varn(x)<varn(y))?gpuigs(y,lgef(x)-3):gpuigs(lgef(y)-3);
  354.     Enfin, remplacer if((tx<10)||(ty<10)) return gun par
  355.     if((tx<10)||(ty<10))
  356.       {
  357.         if(tx==10) return gpuigs(y,lgef(x)-3);
  358.         if(ty==10) return gpuigs(x,lgef(y)-3);
  359.         else return gun;
  360.       }.
  361. 94) alglin.c: greal() et gimag() case 13 et case 14 ne doivent pas etre traites
  362.     comme types vect/mat. Declarer GEN p1, p2 et long tetpil au debut, et apres
  363.     case 14 mettre
  364. dans greal():
  365.     av=avma;p1=gadd(gmul(greal(x[1]),greal(x[2])),gmul(gimag(x[1]),gimag(x[2])));
  366.     p2=gadd(gsqr(greal(x[2])),gsqr(gimag(x[2])));tetpil=avma;
  367.     z=gerepile(av,tetpil,gdiv(p1,p2));break;
  368. dans gimag():
  369.     av=avma;p1=gsub(gmul(gimag(x[1]),greal(x[2])),gmul(greal(x[1]),gimag(x[2])));
  370.     p2=gadd(gsqr(greal(x[2])),gsqr(gimag(x[2])));tetpil=avma;
  371.     z=gerepile(av,tetpil,gdiv(p1,p2));break;
  372. 95) mp.c: mpent() remplacer les & dans les deux while par des
  373.    &&. Puis, mettre les5 lignes allant de for(i=d+2;(i>=2)&&...
  374.    jusqu'a } a l'interieur de if(f){ ... }.
  375. 96) Supprimer des affectations de variables inutiles:
  376.   alglin.c gauss() (av), rank (y). arith.c mpsqrtmod() (av2)
  377.   regula() (p4). bibli1.c lll() (dx). bibli2.c initell() (r0)
  378.   apell1() (av2) hell() (w). mp.c mulir() (lx) modss() (p1).
  379.   trans1.c gexp() (tx) mpsc1() (l3) mpsincos() (l).
  380.   trans2.c kbessel() et hyperu() (lbin2). trans3.c sagm() (tx)
  381.   jbesselh() (p3).
  382. 97) gen3.c truecoeff() mettre des {} autour du if..;else.
  383. 98) plotdummy.c rajouter return gnil dans les deux fonctions.
  384. 99) trans2.c (et anal.c, gencom.h, messages.c) ecrit gzeta().
  385. 100) Mis a jour le manuel.
  386. (Version 1.34 devrait etre prete bientot)
  387. 101) reecrit gzeta() avec estimation rigoureuse de l'erreur.
  388. 102) (C. Batut) reecrit lll et lllgram. C'est beaucoup plus stable.
  389. 103) Ecrit la division sparc 64/32 -> 32,32. Cela gagne environ 20%
  390.    sur une sparcstation.
  391. 104) Inclus un fichier mp.asm qui devrait etre la copie conforme de
  392.     mp.s mais avec une syntaxe plus standard.
  393. 105) bug dans bibli2: addell() , ligne 10, remplacer gadd(e[4],gmul(x1,...
  394.    par gadd(gsub(e[4],gmul(e[1],y1)),gmul(x1,...
  395. 106) gen2.c: reecrit completement la fonction gval(), qui est
  396.    maintenant une macro de la fonction ggval utlisable tres generalement
  397.    et appelable par la fonction valuation() sous GP.
  398.    au passage, ecrit une fonction poldivis(), analogue de mpdivis mais
  399.    pour les polynomes.
  400. 107) arith.c: primeform(), supprimer la ligne if(gcmp0(b)) err(sqrter5);
  401.  
  402. ------ Disquette envoyee a Dominique le 4/10/90 a 12h
  403.  
  404. 108) base.c: hnf() inclus du code pour eviter les debordements de pile:
  405.     long lim=(avma+bot)>>1; au debut, puis juste avant l'accolade fermante du
  406.     for(i=li-1;i>=1;i--), mettre:
  407.     if(avma<lim) {tetpil=avma;y=gerepile(av,tetpil,gcopy(y));}
  408. 109) (suite de 103) Grace a l'aide de Dik Winter, ameliore encore de
  409.    15% la division 64/32 sparc (sparc.s).
  410. 110) Enleve quelques variables inutilement declarees (sauf dans 
  411.    nucomp qui est en cours d'ecriture).
  412. 111) Ecrit ploth2 pour mac et XWindows. Remanie le Makefile.sun3 en y ajoutant
  413.     les remarques pour construire la version XWindows. Utilisation forcee de cc
  414.     pour assembler mp.s . Suppression des ifdef dans plot.sun. plot.c est supprime
  415.     ce n'est plus qu'un lien vers plot.sun ou bien plot.X
  416. 112) Bug mod(3,5)*mod(3,5): dans gen1.c, partout ou il y a des affectations z[1]=x[1]
  417.     ou z[1]=y[1] correspondant aux types 3, 8 ou 12, remplacer par z[1]=copyifstack(x[1])
  418.     (resp. y[1]). Dans gen2.c, gcopy(), quand i est entre lontyp[tx] et lontyp2[tx],
  419.     remplacer y[i]=x[i] par y[i]=copyifstack(x[i]). Dans gencom.h, declarer 
  420.     extern GEN RAVYZARC, modifier la macro isonstack, et rajouter la macro copyifstack
  421.     comme suit:
  422.  
  423.    #define isonstack(x)   (RAVYZARC=(GEN)(x),((RAVYZARC>=(GEN)bot)&&(RAVYZARC<(GEN)top)))
  424.    #define copyifstack(x) (RAVYZARC=(GEN)(x),((RAVYZARC>=(GEN)bot)&&(RAVYZARC<(GEN)top))?lcopy(RAVYZARC):(long)RAVYZARC)
  425.    Enfin, dans init.c, declarer GEN RAVYZARC dans la liste des variables globales communes.
  426. 113) Remanie les Makefiles.
  427. 114) Suite de 112: dans gen2.c, gneg() et gpuigs() meme modifs.
  428.    (J'espere que je n'en ai pas rate d'autres).
  429. 115) Inclus une gestion de pile (preserve) dans lll et programmes
  430.    associes, ce qui fait que lll peut traiter de grandes matrices
  431.    sans overflow.
  432. 116) base.c: Ecrit smith(), reduction de Smith.
  433. 117) Suite de 112 et 114. Encore meme modifs dans gen1.c, gen3.c, alglin.c.
  434. 118) gen3.c: ground() et grndtoi() case 19 remplacer dans le premier for, y[1]=x[1]
  435.     par y[i]=x[i] (ca a le meme effet mais c'est plus logique).
  436.  
  437. Le 16/10/90 release de la version 1.34 beta
  438.  
  439. 119) Encore des modifs comme 112 oublies, y compris en sens inverse (i.e. des z[1]=lcopy a
  440.     remplacer par z[1]=copyifstack dans certains cas.
  441. 120) gen1.c, gmul() case 7* case 8, remplacer cgetg(3,8) par cgetg(4,8).
  442. 121) alglin.c, messages.c, anal.c, gencom.h. ecrit les fonction detreel (detr sous gp),
  443.      invmulmatreel(), invmatreel() (matinvr sous gp).
  444. 122) gen3.c: gmul2n, enlever case 8 des cases 10,6,11,... et remplacer par
  445.      case 8 : y=cgetg(lx,tx);y[1]=copyifstack(x[1]);for(i=2;i<lx;i++) y[i]=lmul2n(x[i],n);
  446.      break;
  447. 123) gen3.c: gdiventres, nettoyage: remplacer deux fois des copy de zero par zero.
  448. 124) trans1.c: mpcs1(), remplacer alpha=gcmp0(p1) ? ... par
  449.       if(gcmp0(p1)) alpha=1000000.0;
  450.       else {m=expo(p1);alpha=(m< -1023) ? -1-m*LOG2 : -1-log(fabs(rtodbl(p1)));}
  451. 125) mp.c: modifier le code de rtodbl() pour que l'on renvoie 0.0 au lieu d'une erreur
  452.      en cas d'underflow: remplacer la premiere ligne par
  453.      if((!s)||((ex=expo(x))< -1023)) return 0.0; et supprimer le ex=expo(x) qui suit.
  454. 126) supprime rtodbl() et dbltor() de mp.s, genport.h, et deplace de mp.c a gen2.c.
  455.      Inclus les declarations dans gencom.h. Le patch mac n'est plus necessaire.
  456.  
  457.  
  458. Release internationale de la version 1.34
  459. ____________________________________________________________________________________
  460.  
  461. Numerotation recommence a 1.
  462.  
  463. 1) gen2.c: gneg(), mettre un message d'erreur en cas de negation d'une forme quadratique.
  464. 2) es.c: sori(), changer if ((typy>2)&&(typy<17)) en
  465.          if ((typy>2)&&(typy<15))
  466. 3) gen3.c: ginv() changer typ==9 en typ==16.
  467. 4) ajoute la fonction anell() qui avait disparue (???).
  468. 5) Mis un peu partout le type 15 (formes quadratiques de discriminant >0). Desole Dominique,
  469.    on enlevera 15 et 16 si cela devient genant.
  470. 6) bibli1.c: ecrit minim().
  471. 7) polarit.c: factmod() vers la fin remplacer t[1]=gcopy(t[1]) par
  472.    t[1]=gdiv(t[1],((GEN)t[1])[lgef(t[1])-1])
  473.    et mettre la ligne commencant par "if (expos[j]) t[j]=...."
  474.    juste avant la ligne "for(k=1;k<j....".
  475. 8) base.c: ecrit une nouvelle version de hnf(), a priori meilleure.
  476. 9) Makefile.sun3: remplacer 8 blancs avant cc ... mp.s par un TAB.
  477. 10) gp.c: infile() et outfile(), traiter correctement le cas ou on ne peut pas ouvrir un
  478.    fichier.
  479. 11) gp.c: rajouter la reinitialisation du prompt a "? " (ou "?\ " pour le mac) en cas de \k.
  480. 12) BUG IMPORTANTE POUR LA VERSION PORT: dans versionport.c, divll() remplacer
  481.     else{dbl-=(C4/2);p=(ulong)dbl;p|=0x80000000;} par:
  482.  
  483.   else
  484.     {
  485.       if(dbl>=C4) p=0xffffffff;
  486.       else{dbl-=(C4/2);p=(ulong)dbl;p|=0x80000000;}
  487.     }
  488. 13) bugs dans lllgram
  489.  ajouter errger2 (matrice non carree)
  490.  et errger3 (matrice non definie)
  491. 14) gen2.c: gpui() exponentiation des series incorrectes ; corrections faites.
  492. 15) gp.c: rajouter un blanc en cas de changement de prompt.
  493. 16) gen3.c recip() remplacer y[i]=y[i]+decal par
  494.     if(y[i]<av6) y[i]+=decal
  495.     et u[k]=u[k]+decal par u[k]+=decal
  496. 17) Gros changements dus a Dominique pour traiter plus correctement les
  497.     entrees-sorties, en particulier dans es.c et gp.c.
  498. 18) Un grand nombre de fonctions void declarees explicitement void.
  499. 19) Remplacement du pari.el de A. Hoffmann par celui de David Carlisle.
  500. 20) gen3.c: gfloor() remplacer signe(x) par gsigne(x).
  501. 21) trans1.c: gsqrt() case 3: remplacer y[1]=x[1] par
  502.     y[1]=copyifstack(x[1]).
  503. 22) bibli1.c: gprec() case 7: changer y[4]=lcopy(x[4]) par
  504.     y[4]=lmodii(x[4],y[3]).
  505. 23) bibli1.c: ecrit gconvpe() (conversion p-adique--> entier ou rationnel)
  506.     et incorpore dans trunc.
  507. 24) corrige divers bugs dans gp.c
  508. 25) gencom.h: ajoute les macros mulri et lmulri.
  509. 26) gp.c: apres unused characters... ajoute pariputc('\n').
  510. 27) Version 2.4 de pari.el.
  511. 28) gen2.c: ggval() case 19: remplacer val=0 par val=2147483647.
  512. 29) gen2.c: ggval() case 10 et 11: modifier pour autoriser la valuation p-adique
  513.     d'un polynome/serie, et corrige le case 11.
  514. 30) polarit.c: ecrit sturmpart() (et modifie les autres fichiers en consequence).
  515. 31) Change le decoupage de trans2.c et trans3.c, coupe en deux alglin.c, arith.c
  516.     et polarit.c, et change les Makefiles.
  517. 32) Remplace tous les gmodulo restants (dans polarit1.c et arith1.c) par des gmodulcp.
  518. 33) Enleve tous les talker restants et remplace par des err normales (recompile tout).
  519. 34) Ecrit newtonpoly().
  520. 35) Reecrit completement rootmod(), renomme l'ancien en rootmod2().
  521. 36) Ecrit approxp(), apprgen().
  522. 37) Ecrit rootpadic().
  523. 38) alglin1.c: extract() remplacer if(in>=lx) err(extracter3);
  524. par if((in>=lx)||(in<=0)) err(extracter3);
  525. 39) gen2.c: ggval() case 7: remplace val=valp(x) par
  526.     val=signe(x[4])?valp(x):valp(x)+precp(x).
  527. 40) Modifie le manuel a plusieurs endroits, ainsi que users.tex et index.tex.
  528. 41) Ecrit smallpolred(), factoredpolred(), factoredbase(), factoreddiscf().
  529. 42) Modifie quelques lignes de factmod() pour pouvoir factoriser modulo un p>=2^31.
  530. 43) Modifie gen1.c, gen2.c et gen3.c pour que les operations entre entiers modulo
  531. et p-adiques soient legales.
  532. 44) Ecrit bittest().
  533. 45) Fait une petite modif a gsigne() dans le cas 4 et 5 (pas une bug), et modifie
  534. rootmod pour que les racines soient "ordonnees".
  535. 46) BUG DANS MP.C: dvmdii(): dans le if(ly==3) remplacer p2[1]=(sy<<24)+3 par
  536. p2[1]=(sx<<24)+3 (comme le suivant).
  537. 47) Ecrit polred2() (pas tres different de polred()).
  538. 48) versionport.c: divll() (le vieux, ou est passe le nouveau ?), remplacer
  539.     if(dbl>=C4) par if(dbl>C4-1).
  540. 49) mp.c: divrr() remplacer if(!ldif) {y0=y[lz+2];y[lz+2]=0;}
  541.     par if(!ldif) {y0=y[lz];y[lz]=0;}
  542.     et if(!ldif) y[lz+2]=y0; par if(!ldif) y[lz]=y0;
  543.     Enfin, remplacer for(i=2;i<=lz;i++) z[i-1]=x[i];
  544.     par:
  545.         for(i=2;i<=lz-1;i++) z[i-1]=x[i];
  546.         z[lz-1]=(lx>lz) ? x[lz] : 0;
  547. 50) mp.s: _divis: apres 4$:, juste avant le divull d1,d3:d4 ajouter moveq #0,d3
  548.   (remarque: cela ne semble pas affecter les sun3 et les MacII que d3 ne soit pas
  549.   initialise a 0. Mais ca plante d'autres 68020).
  550.   Corrections semblables dans _divss, _modss, _resss: apres movem d2-d3,-(sp), mettre
  551.   moveq #0,d3, puis apres l'etiquette 1$, remplacer divsl d1,d3:d4 par:
  552.     bpl   9$
  553.     moveq #-1,d3
  554. 9:  divsl d1,d3:d4
  555.  
  556. 51) es.c: bruti(), ligne 6 du case 10: remplacer sanssigne par 0.
  557. 52) arith1.c: sfcont(), case 4,5: dans le if(signe(p3)<0) remplacer
  558.     addiiz(p3,p2,p3);affii(p3,p1); par
  559.     p4=addii(p3,p2);affii(p4,p1);cgiv(p4);
  560.     Puis, au debut de ce meme case 4,5 remplacer p1=gcopy(x[1]) par
  561.     if(lgef(x[1])>=lgef(x[2])) p1=lcopy(x[1]);else affii(x[1],p1=cgeti(lgef(x[2])));
  562. 53) trans2.c: ggamma(), cxgamma() et mpgamma(): quelques changements pour avoir une
  563.     erreur en cas d'entier negatif ou nul (modifie le message gamer2 dans messages.c).
  564. 54) ecrit(!!!) gtype() (type sous gp).
  565. 55) arith1.c: classno2() reecrit pour marcher en cas de discriminants non fondamentaux.
  566.     (classno(x) utilise classno2(x) pour x>0).
  567. 56) arith1.c: regula() (et erreurs.h, messages.c) ajoute un test et un message d'erreur
  568.     quand l'argument du regulateur est un carre.
  569. 57) Dans de nombreux endroits, modifie le traitement du zero p-adique pour 
  570.     qu'il ne depende que de valp et pas de precp.
  571. 58) polarit1.c: enlever #define vvalp et remplacer par valp partout.
  572. 59) gen2.c: ggval() case 7: remplacer signe(x[4]) par valp(x).
  573. 60) messages.c: and factorpadic a rajouter au message rootper1.
  574. 61) polarit2.c: content() ajoute avant le case 10:
  575.  
  576.     case 19: if(lx==1) return gun;
  577.       p1=content(x[1]);l=avma;
  578.       for(i=2;i<lx;i++) {tetpil=avma;p1=ggcd(p1,content(x[i]));}
  579.       if(l==avma) return gcopy(p1);
  580.       else return gerepile(l,tetpil,p1);
  581. 62) polarit2.c: ggcd() case 1,case 3 remplacer z[1]=y[1] par
  582.     z[1]=copyifstack(y[1]).
  583.     idem case 3,case 3 remplacer ? z[1] par ? copyifstack(x[1]).
  584.     case 1 rajouter
  585.       case 7 : z=gpuigs(y[2],min(valp(y),ggval(x,y[2])));break;
  586.     case 3 rajouter la meme chose.
  587. 63) (suite de 62) case 4,5 remplacer tout par
  588.  
  589.       case 4 :
  590.       case 5 : 
  591.     switch(ty)
  592.       {
  593.       case 4:
  594.       case 5: z=cgetg(3,4);
  595.         z[2]=lmulii(x[2],y[2]);l=avma;
  596.         p1=mulii(x[1],y[2]);
  597.         p2=mulii(x[2],y[1]);tetpil=avma;
  598.         z[1]=lpile(l,tetpil,mppgcd(p1,p2));
  599.         gredsp(&z);break;
  600.       case 6:
  601.       case 8: z=gun;break;
  602.       case 7 : z=gpuigs(y[2],min(valp(y),ggval(x,y[2])));break;
  603.       }break;
  604.       case 7: if((ty!=7)||(!gegal(x[2],y[2]))) z=gun;
  605.             else z=gpuigs(y[2],min(valp(y),valp(x)));break;
  606. 64) Remplacer tout les return gcopy(gun) par return gun.
  607. 65) polarit2.c: content() changer le default: les premieres lignes sont
  608.  
  609.     default: f=1;
  610.       if(tx!=15) {for(i=lontyp[tx];(i<lx)&&f;i++) f=(typ(x[i])==1);i=lx-1;}
  611.       else i=lx-2;
  612.       p1=(GEN)x[i];l=avma;
  613.  
  614.    puis remplacer i>=3 par i>lontyp[tx], i>=2 par i>=lontyp[tx].
  615. 66) A changer les Makefile pour install (-c, -m,  -s a voir).
  616.     Changer les numeros de version.
  617. 67) gen2.c: cvtop() remplacer (7 fois) les pvaluation(x,y,&z) par ggval(x,y).
  618. 68) gen2.c: ecrit gcvtop() (et modifie le message d'erreur cvtoper2 dans 
  619.     messages.c).
  620. 69) polarit1.c: en train d'ecrire factorpadic() et padicff().
  621. 70) Toutes les fonctions a partir de approxp(): remplacer valp(x) par 
  622.     ggval(x,p), ou p a ete mis convenablement (egal a a[2]).
  623. 71) ggval() remplacer if(gcmp0(x)) par if(gcmp0(x)&&(tx!=7)&&(tx!=11)).
  624. 72) Modifie quelques endroits dans le manuel.
  625. 73) polarit1.c: rootpadic() cas r==1, remplacer yi[4]=p1[2] par
  626.     yi[4]=lcopy(p1[2]).
  627. 74) gen2.c ggval() case 12: remplacer tp!=1 par tp!=10.
  628. 75) polarit1.c: enleve approxp() et incorpore apprint() a apprgen(), et 
  629.     legerement modifie apprgen.
  630. 76) gen3.c: ecrit isexactzero() (pas identique a isnull()).
  631. 77) gen2.c: Modifie normalizepol() pour ne chasser que les zeros exacts.
  632.     Desormais, un polynome "nul" peut avoir une lgef>2, et les coefficients
  633.     sont alors significatifs.
  634. 78) polarit2.c: primpart() changer if(lgef(x)==2) z=gzero en
  635.     if(!signe(x)) z=gcopy(x);
  636. 79) gen1.c: gadd() fin du case 10,case 10 remplacer apres z[i]=lcopy(x[i])
  637.     tout ce qui suit jusqu'au break par:
  638.     z[1]=x[1];setsigne(z,1);normalizepol(&z);break;      
  639. 80) gen1.c: gadd(), gmul(), gdiv() changer le debut du case 10 case <10.
  640. 81) gen2.c: Modifie ggval() case 12 pour accepter valuation / entier et case 10
  641.     en changeant gcmp0 en iszero.
  642. 82) polarit2.c: factpol() remplace fa[30] par fa, mettre un lx=lgef(x) au 
  643.     debut, puis un fa=cgetg(lx,17);for(i=1;i<lx;i++) fa[i]=zero; et enfin
  644.     quelques typecasts.
  645. 83) gen3.c: deriv() et integ(), modifie quelques trucs pour tenir compte de la
  646.     modification des polynomes nuls.
  647. 84) mp.s: gerepile() (!!!) etiquette 7:, remplacer movl  40(sp),d0 par
  648.     movl  d0,d1
  649.     movl  40(sp),d0
  650.     puis 2 lignes apres remplacer cmpl d0,a0 par cmpl d0,d1.
  651.     (ceci corrige entre autres l'erreur de reorder([])).
  652.  
  653. *********************A FAIRE SUR ELLIPTIC.C DE DOMINIQUE**********************
  654. 85) remplacer tres souvent (peut etre partout) pvaluation(x,p,&p9) par
  655.     ggval(x,p).
  656. 86) ghell(): apres grandn=pval... mettre les 3 lignes suivantes dans un
  657.     if(grandn), suivi de else avma=av2, ou av2=avma est mist apres 
  658.     z=hell(e,a,prec) et declare.
  659.     Modifs essentiellement identiques pour ghell2() et ghell3().
  660. ******************************************************************************
  661. 87) es.c: modifier 4 lignes de bruti.
  662. 88) mp.s: nombreuses modifications (simplifications) dues au remplacement par
  663.     des _gzero.
  664.  
  665. ----------------------------------------------------
  666.  
  667. Version 1.34.90 (pre alpha version de la 1.35)
  668.  
  669. 89) gpreadline.c: changer buffer=strdup("\\q") en strcpy("\\q",buffer).
  670. 90) bibli2.c: sumpos() changer 4 lignes apres le debut,
  671.     newvalue(ep,cgetr(prec)) en 
  672.  
  673.     p1=cgeti(prec+1);p1[1]=0x1000001+prec;
  674.     newvalue(ep,p1);
  675. 91) deplace eulsum() de bibli1.c a bibli2.c.
  676. 92) bibli2.c: sumalt() dans le grand if(gcmp0(p1)||....) rajouter la condition
  677.     &&(jterm>=10) pour eviter les arrets triviaux.
  678. 93) anal.c: dans les case 1,....200, partout ou il y a des itos(), tester
  679.     avant si le type est egal a 1, et sinon envoyer l'erreur caseer. Ajouter
  680.     cette erreur dans erreurs.h et messages.c.
  681. 94) dans padicff(), change pro[++j]=p1[k] en pro[++j]=(long)lift(p1[k]).
  682. 95) incorpore factorpadic a anal.c et messages.c.
  683. 96) Fini d'ecrire padicff et factorpadic.
  684. 97) alglin2.c: caract() mettre le setvarn(p5,v) apres le p5[1]=0x01000004
  685.     et non pas avant.
  686. 98) polarit1.c: dans apprgen() et apprgen12() remplacer ggval par gmaxval
  687.     (sauf a la division par p^ggval ou on teste simplement a zero), ou
  688.     #define gmaxval(x,y) (gcmp0(x)?BIGINT:ggval(x,y)).
  689. 99) polarit1.c: apprgen12() rajouter un lift() devant p1=poleval(...).
  690. 100) arith2.c: primeform() ajouter la variable long prec et remplacer a la fin
  691.     cgetr(3) par cgetr(prec). De plus, dans classno() ajouter ,3 dans l'appel
  692.     de primeform.
  693. 101) arith2.c: rhoreal(): debut, changer tout le calcul de l en
  694.     l=max(lg(x[4]),((-expo(x[4]))>>5)+2);if(l<=2) l=3;
  695.     gencom.h: rajouter (apres min) la definition de max.
  696. 102) polarit1.c: bezoutpol() modifier les 5 lignes apres le while(signe(w3)).
  697. 103) presque partout: verifier systematiquement si les decalages sont
  698.     necessaires a l'aide de la macro adecaler(x,tetpil,anavma).
  699. 104) mis a jour manuel et pari.menu. Modifie messages.c en remplacant constant
  700.     polynomial in roots par zero polynomial.
  701. 105) polarit1.c: roots(), retourner le vecteur vide au lieu d'une erreur en cas
  702.     de polynome constant non nul.
  703. 106) gp.c (et gpreadline.c) enlever le #define BUFFSIZE fixe et le remplacer
  704.     par un long paribuffsize modifiable par -b. Changer le stacksize de 500
  705.     a 1000 dans gencom.h. Modifie manuel, pari.el, usage() en consequence.
  706. 107) bibli1.c: lllgram() apres le if(!gcmp0(r=ground(...))) enlever le ; (!!!)
  707.     et mettre else mu1=coeff(mu,k,k-1).
  708. 108) bibli1.c: polrecip() avant return y ajouter normalizepol(&y).
  709. 109) bibli1.c: lindep2() remplacer l'appel lll(p4,prec) par 
  710.      lll(p4,(prec<<1)-2).
  711. 110) bibli1.c (et messages.c, anal.c et gencom.h) ajoute la fonction algdep2().
  712. 111) bibli1.c, anal.c, messages.c: ecrit polredreal().
  713. 112) bibli1.c: modifie la derniere ligne de polred(), polredreal(), 
  714.      factoredpolred(), smallpolred() pour que la trace soit toujours >=0.
  715. 113) gen3.c: lift() corrige le case 11.
  716. 114) polarit1.c: apprgen() et apprgen12() remplacer if((vv=1)... par
  717.      if((vv==1)....
  718. 115) polarit1.c: rootmod() remplacer gcmpgs(p,stoi(4)) par gcmpgs(p,4).
  719. 116) polarit1.c: apprgen() et apprgen12() remplacer idiot2=ggrando(p,1)
  720.      par idiot2=gcmpgs(p,gdeux) ? ggrando(p,2) : ggrando(p,1);
  721. 117) polarit1.c: rootpadic(), traiter correctement la creation de yi dans
  722.      le cas p=2.
  723. 118) polarit1.c: apprgen() et apprgen12(), encore des modifs pour p=2.
  724. 119) polarit1.c: rootpadic() etc... changer les cgetg(,17) en cgetg(,18).
  725. 120) gen3.c: gsubst() modifier le case 12 (de toutes facons il va falloir
  726.      modifier tous les case 12).
  727. 122) polarit1.c: apprgen12() modifie l'utilisation de idiot et idiot2.
  728.      La factorisation p-adique pour p>2 a l'air de marcher completement
  729.      maintenant.
  730. 123) polarit1.c: apprgen12() enleve un lift() apres p1=.
  731. 124) Saut quantique: modification complete du traitement du case 12,
  732.      qui devient le case 9. Modifs trop nombreuses pour etre detaillees.
  733. 125) gen1.c: gadd() dans le cas ty==10, et e==2, sortir le setvarn(z,vy)
  734.      du else.
  735. 126) gen3.c: gmul2n() corriger le case 13,14 et rajouter case 9.
  736. 127) es.c: ecrire() remplacer 2 fois dec>=deceff par dec>deceff.
  737. 128) polarit1.c: padicff() modifier l'appel a apprgen9 pour que dans le cas
  738.      du degre 1, apprgen soit appele.
  739. 129) Enleve tous les gcopy((g)zero) et gcopy((g)un) et remplace par gzero et
  740.      gun.
  741. 130) Reecriture complete de elliptic.c par dominique, avec algorithme de Tate.
  742. 131) arith2.c: classno() Oublie de remttre com=0 vers la fin, et remplacer
  743.      if(cmpii(fh[2],ftest[2])) com= -com par
  744.      if(!cmpii(fh[2],ftest[2])) com= -com.
  745. 132) elliptic.c: apell() changer la declaration multiple table[100] en une 
  746.      declaration dynamique, et ajouter des unsigned long (2 fois) a la fin,
  747.      au moment du calcul de q.
  748. 133) elliptic.c: modifie quelques 19 en 20 pour la longueur donne par initell().
  749. 134) elliptic.c: coordch(), mis correctement le calcul de eta1, eta2 et
  750.      volume.
  751. 135) mp.s: (pendant de la correction 49) divrr() juste avant dext:
  752.      remplacer les instructions commencant par bne   2$ par
  753.         bne     2$   
  754.         movl    a3@(-8),a6@(-20)
  755.         clrl    a3@(-8)
  756. 2$:     subqw   #1,d6
  757.         bgt     3$
  758.         movl    a3@(-4),a6@(-24)
  759.         clrl    a3@(-4)
  760. 3$:     moveq   #0,d6
  761.  
  762.      et plus loin, apres bcdf:, autour de 7$ echanger
  763.      a5@(-8) et a5@(-4).
  764.  
  765.     Enfin, dans dvrr:, mettre apres movl a0@,a6@(-10):
  766.     movw    a2@(2),d6
  767.     subw    #2,d6
  768.  
  769.     et apres le dbra d0, 1$:
  770.  
  771.         cmpw    d7,d6           | l2>l1 ?
  772.         bgt     4$
  773.         clrl    a4@(-4)         | Si l2<=l1, y(m+1) n'existe pas
  774.                                 | a4 pointe apres y(m+1)
  775. 4$:     movl    a0,a2.
  776. Enfin, dans divri apres 2$, apres le bsr getr (alloc. du resultat) ajouter
  777.     movl    _avma,a3        | eviter le chevauchement.
  778.     subql    #8,a3
  779.     movl    a3,_avma
  780.     movl    #2,a3@        | Hack pour que giv rende ceci
  781.      (l'instruction suivante etant movl a0,a3).
  782. 136) polarit2.c: sturm(), et es.c: sori(), remplacer les signe par gsigne (dans sori,
  783.      uniquement quand typy==4 ou 5.
  784. 137) mp.s: mulir(), en 2$+3 remplacer movw a1@(2),d0 par addqw #1,d0.
  785.      Dans mulrr() et mulir(), remplacer le link a6,#-8 par link a6,#-16.
  786. 138) mp.s: mulir(), juste avant bsr murr, ajouter
  787.     exg    a1,a2        | Il faut que a2 soit le plus court!
  788.     movw    a2@(2),d0    | Mettre l'inf des longueurs dans d0 pour murr
  789. 139) mp.s: changer toute la fin de mulrr() 
  790.  
  791. munzr:  movw    a2@(2),d0
  792.     clrl    a6@(-12)    | Initialiser flag a 0
  793.         cmpw    a1@(2),d0
  794.         bls     1$
  795.         movw    a1@(2),d0       | d0.w contient L+2=inf(L1,L2)+2
  796.         exg     a1,a2           | a2 pointe sur le + court
  797.     bra    2$
  798. 1$:    bne    2$
  799.         lea     a1@(0,d0:w:4),a3 | a3 pointe sur x[L+1]
  800.     movl    a3,a6@(-12)    | longueurs egales: flag egal adresse
  801.     movl    a3@,a6@(-16)    | sauvegarde de x[L+1]
  802.     clrl    a3@
  803. 2$:     bsr     getr
  804.         movl    a0,a6@(-8)
  805.         bsr     murr            | effectuer la multiplication
  806.     tstl    a6@(-12)
  807.     beq    mulrrf
  808.     movl    a6@(-12),a1
  809.     movl    a6@(-16),a1@    | remettre x[L+1]
  810. mulrrf: movl    a6@(-8),d0      | adresse du resultat
  811.         moveml  sp@+,d2-d7/a2-a4
  812.         unlk    a6
  813.         rts
  814.  
  815.      et enlever le movw   a2@(2),d0 a la troisieme ligne de murr.
  816. 140) mp.c: mulrr() et mulir() remplacer le premier if(p1) (apres garde=hiremainder) 
  817.   (ou son equivalent dans mulir) par:
  818.   if(p1)
  819.     {
  820.       mulll(p1,y[3]);garde=addll(hiremainder,garde);p2=mulll(p1,y[2]);
  821.       hiremainder+=overflow;garde=addll(p2,garde);z[lz-1]=overflow+hiremainder;
  822.     }
  823.   else z[lz-1]=0; (pas le if else dans mulir).
  824. 141) Un peu partout remplacer les occurences de gpi par des mppi().
  825. 142) ecrit pnqn() (arith1.c, anal.c, messages.c, erreurs.h, gencom.h, 
  826.      pari.menu, manuel).
  827. 143) versionport.c: ne pas oublier de remettre la fin du commentaire de divll
  828.      et d'enlever celui de la fin de l'ancien divll.
  829. 144) Un certain nombre de modifs d'ordre essentiellement esthetique, y compris
  830.      le changement de nom de fc en gcf.
  831. 145) mp.c: mulrr() et mulir(), modif 140 incorrecte. remplacer la meme chose par
  832.   if(p1)
  833.     {
  834.       mulll(p1,y[3]);p2=addmul(p1,y[2]);
  835.       garde=addll(p2,garde);z[lz-1]=overflow+hiremainder;
  836.     }
  837. 146) mp.c: divrr() changer tout le if(lz==3) en 
  838.  
  839.   if(ly==3) /* Ce n'est pas une erreur: c'est bien ly et pas lz ici */
  840.     {
  841.       i=x[2];si=(lx>3)?x[3]:0;
  842.       if((ulong)i<(ulong)y[2])
  843.     {
  844.       hiremainder=i;z[2]=divll(si,y[2]);
  845.       z[1]=ex1-1;return z;
  846.     }
  847.       else
  848.     {
  849.       hiremainder=((ulong)i)>>1;
  850.       z[2]=(i&1)?divll((((ulong)si)>>1)|(0x80000000),y[2]):divll(((ulong)si)>>1,y[2]);
  851.       z[1]=ex1;return z;
  852.     }
  853.     }
  854. 147) mp.s: reecrit dvrr(). Les versions port, sparc et 68k ont maintenant l'air
  855.      de coincider parfaitement.
  856. 148) arith1.c: ajouter un troisieme parametre a sfcont() pour limiter la
  857.      longueur des fractions continues, et ecrit et installe la fonction
  858.      gboundcf() (boundcf() sous gp).
  859. 149) arith1.c: ecrit et installe la fonction gcf2() (cf2() sous gp).
  860. 150) elliptic.c: globalreduction() ajoute verification type de e1 correct.
  861. 151) elliptic.c: installe la fonction smallinitell(), et legerement modifie
  862.      les messages.
  863. 152) elliptic.c: quelques petites modifs pour accepter un vecteur de longueur
  864.      14, et mis a jour le manuel.
  865. 153) trans1.c: pasqrt() corrige des bugs dans le traitement des racines carrees
  866.      2-adiques et modifie le manuel.
  867. 154) trans2.c etc...: ecrit et installe glngamma().
  868. 155) arith2.c: modifie le code pour supprimer les longjmp.
  869. 156) trans2.c: mpbern() mettre nomb=0 si nomb<0.
  870. 157) trans2.c et trans3.c: modif analogue a la 141 pour les bernoulli: ne pas
  871.      utiliser toute la precision disponible.
  872. 158) trans2.c: mpgamma(), cxgamma(), mplngamma(), cxlngamma() corrige pour les
  873.      arguments de grand module.
  874. 159) elliptic.c: initell() modifie pour que dans le cas p-adique toutes les
  875.      composantes soient du type p-adique.
  876. 160) bibli1.c: minim(), ajoute eps a la borne pour arrondir correctement.
  877. 161) Remplace des malloc() par newbloc() et free() par killbloc().
  878. 162) Ecrit setprecision() et getprecision().
  879.  
  880. ------------------- version 1.34.95 --------------------------------
  881.  
  882. 163) elliptic.c: subell() apres le premier if(), et subsell() au debut,
  883.      rajouter:  if(lg(z2)<3) return gcopy(z1);
  884.      powell(), powsell() et powssell(), apres le if(!s) (ou le if(!n)) rajouter
  885.      if(lg(z)<3) return gcopy(z);
  886. 164) polarit2.c: squff(), changer if(!klim) en
  887.      kd=da>>1;if((!klim)||(klim>kd)) klim=kd;
  888. 165) gp.c et gpreadline.c: ajoute  nbchi=dec=glbfmt[2];apres z=readseq(&tch);
  889.      (au cas ou GP aurait fait appel a setprecision()).
  890.      Modifie setprecision() et deplace de gp.c a bibli1.c, ainsi que
  891.      setserieslength.
  892. 166) gp.c, gpreadline.c, init.c, gencom.h: rendu paribuffsize global, et modifs
  893.      en consequence pour qu'il soit initialise par init().
  894.      anal.c, truc(): change le newbloc(1000) par newbloc(paribuffsize>>1).
  895. 167) gp.c et gpreadline.c: globs() et tous les appels a globs(), ajouter
  896.      comme parametres parisize et primelimit, et les faire imprimer. Modif
  897.      semblable pour escape(). Enfin, dans globs() changer
  898.      thestring[20] en thestring[70], et le nom primes en primelimit.
  899. 168) alglin2.c: invmulmat() ajoute la verification des tailles.
  900. 169) bibli1.c: ordred() modifie la fin pour que, comme polred, on ne renvoie
  901.      que les polynomes minimaux.
  902. 170) bibli1.c: polredreal() modifie la multiplication par base, incorrecte a
  903.      cause du nouveau traitement du type 9 (se trouve peut-etre a d'autres
  904.      endroits).
  905. 171) bibli1.c: polred() et polredreal(), nettement acceleres en tenant compte
  906.      des denominateurs.
  907. 172) Modifie le nom de la fonction bibliotheque setprecision en setprecr (le
  908.      nom de la fonction gp ne change pas).
  909. 173) Enleve quelques variables inutilisees.
  910. 174) Dans arith1.c et arith2.c, remplace random() par rand().
  911. 175) trans3.c: jbesselh() juste apres le case 5, rajouter av=avma.
  912. 176) bibli1.c: polredreal() accelere en en calculant la matrice des traces
  913.      autrement.
  914. 177) base.c, erreurs.h, messages.c: ajoute deux verifications et messages
  915.      d'erreur dans factoredbase().
  916. 178) base.c: ...base() mettre la variable correcte.
  917. 179) init.c: init() creer polx[255] et polun[255].
  918. 180) alglin2.c: caract() et gnorm() case 9: changer completement d'algorithme,
  919.      utiliser un resultant.
  920. 181) bibli1.c: factoredpolred(), smallpolred(), ordred() memes modifs que la
  921.      modif 171.
  922. 182) users.tex et index.tex change l'espacement des points (!)
  923. 183) gp.c et gpreadline.c: envoyer le prompt seulement quand infile==stdin.
  924.      et dans pari.el version 2.6 remplacer \n\n\n par \n (a voir pour 2.7).
  925. 184) bibli1.c: polred() et tous les autres, mise du signe finale modifiee.
  926. 185) legerement modifie appa.tex et INSTALLATION.
  927. 186) pari.el 2.7 de David Carlisle recu et installe.
  928. 187) modifie legerement pari.el, users.tex et index.tex suivant lettres de
  929.      D. Carlisle et D. Bernardi.
  930.  
  931. ----------------------- release preliminaire de la version 1.35 ------------
  932.  
  933. 188) Corrige quelques erreurs d'impression dans le manuel.
  934. 189) elliptic.c: zell(), le resultat n'etait correct qu'au signe pres 
  935.    modulo le reseau. Modifie un peu au pif. A verifier.
  936. 190) elliptic.c: zell(), corriger si c0=0.
  937. 191) mp.s: suivant une suggestion de R. Schroeppel, modifie mulii(),
  938.    mulir(), mulrr(), dvmdii() et divrr() pour que les boucles internes de
  939.    multiplication ne necessitent que 7 instructions. Gain 5% en vitesse.
  940. 192) arith1.c: mppgcd() completement reecrit en utilisant la version 
  941.    simple de l'algorithme binaire. L'ancienne version s'appelle mppgcd1().
  942.    Ecrit egalement le bezout correspondant, mais pour l'instant il semble
  943.    plus lent, donc pas en service.
  944. 193) base.c: tous les programmes (3 fois) changer n=lg(x)-3 en n=lgef(x)-3.
  945. 194) bibli1.c: lindep2(), remplacer lll(p4,.. par gmul(p4,lll(p4,..., et
  946.    rajouter un parametre variable long bit. D'ou modif dans algdep2(), anal.c, 
  947.    messages.c et le manuel.
  948. 195) usersch3.tex: modifie le paragraphe lll: cela ne rend plus la meme 
  949.    chose!
  950. 196) es.c: ecrire() corrige l'ecriture d'un reel en format exponentiel.
  951.  
  952. ------------------- Release internationale de la version 1.35---------------
  953.  
  954.